查看原文
其他

从 VMWare 到阿里神龙,虚拟化技术 40 年演进史

张献涛 CSDN 2020-10-29

【CSDN 编者按】这几年,越来越多的企业把业务搬到云上来,阿里云顺势推出一个既兼具物理机的性能同时又能提供虚拟机体验的产品——神龙。这款服务器的架构是怎样的?有何特别之处?在「CSDN 在线峰会 —— 阿里云核心技术竞争力」上,在虚拟化领域拥有十多年经验的阿里云弹性计算团队负责人张献涛深入分享了阿里云智能在新型计算架构方面的探索——神龙计算架构,以及阿里云计算架构演进的相关实践,希望能够对所有技术人有所启发及裨益。


复制链接或点击「阅读原文」可免费观看张献涛老师分享视频:

https://edu.csdn.net/huiyiCourse/detail/1176


作者 | 张献涛,阿里云弹性计算负责人
责编 | 夕颜
出品 | CSDN(ID:CSDNnews)

以下为张献涛演讲实录:


各位朋友们大家好,我是张献涛,花名旭卿。我于2014年加入阿里云智能,当前在阿里云负责弹性计算团队。加入阿里云之前,我在英特尔从事虚拟化相关工作。过去十几年,我基本专注在虚拟化领域。


今天要与各位分享的,是过去三四年间,阿里云智能在新型计算架构方面的一个探索——神龙计算架构,以及阿里云计算架构演进的相关实践。


我今天分享的内容分成四部分:


第一部分是关于神龙架构的背景——阿里云为什么要做神龙,神龙解决了云计算哪些业务痛点。


第二部分介绍神龙架构相关的演进——第一、二、三、四代神龙之间有什么异同点,它们一步一步解决了哪些业务诉求,为用户带来哪些核心价值;


第三点主要介绍的神龙架构的实践——它能给云计算的客户带来哪些价值,比如像刚才叔同老师讲的,神龙结合容器能够提供比在物理机上还要好的性能。


一直以来,从事虚拟化的技术人员都是物理机的性能作为优化目标,研究怎么样能把虚拟化后的能力无限接近物理机,比如做到90%,91%、92%、93%、95%,做到97%、98%可能就做不下去了——它只能无限接近物理机。今天用神龙这种新型计算架构的服务器,再加上阿里云的容器,就可以提供比物理机高百分之几十的性能,收益非常高。


最后我简单介绍一下神龙架构的未来。

 

神龙架构的背景


在介绍神龙架构的背景之前,这里面有几个数字,来自一个大项目。我相信在线的很多网友都参与过这个好几千亿的项目,每年可能都有机会参与一次,就是天猫双十一。

 


在2019年的天猫双十一,我们又创造了很多新的历史记录,比如说全天交易额达到了2684亿,相比去年有比较大的提升。第二个数字是54.4万笔每秒,这个代表在0点清空购物车时,每秒钟能够处理交易的笔数。12.92亿个包裹意味着几乎人均一个包裹。


一个个的天量数字背后,都是在阿里云公共云上完成。我们去年达成了一个里程碑事件——整个阿里巴巴经济体业务,全面迁到公共云上面来,100%核心交易系统全面在阿里云上完成。


在三四年之前,没有今天讲的这个神龙架构之前,其实是做不到的。因为双十一上云对公共云平台的挑战非常大,线下也饿徐用物理机去堆是可以的。但是使用公共云的基础设施,要承担阿里巴巴经济体,比如电商、金融、物流相关交易,并且是双十一这种天量的交易,是极大的挑战。


今天我们做到了。背后是神龙服务器在起作用。

 


我们通过这张图简单直接看一下,左边的照片是2017年10月的云栖大会,我们发布第一代神龙服务器的时刻。在这个时期起,神龙架构开始成为整个阿里云智能最核心的竞争力之一。


为什么它能够承担起像阿里巴巴双十一这样复杂的业务?


第一、因为神龙能够充分地利用云基础设施的力量,也就是这里展示的高弹性。单台服务器,或者一个集群,在线下其实很难利用云基础设施的能力,而神龙云服务器能和云基础设施融合在一起,提供高弹性的资源。比如,你需要更多的存储、更多的网络资源、甚至更多的数据库,你不用停机、你也不用去插硬盘,系统会根据你的管控命令,自动进行资源伸缩。


第二是高稳定,尤其是性能的输出,需要非常稳定。对于笔记本、PC这可能无所谓,但是对于企业级用户所用的服务器来说,性能输出需要是一个稳定的值。

为什么?可能做过业务规划或者容量规划的同学能理解,如果计算性能处于波动的状态,那很难规划业务需要多少台服务器支撑。比如说在线直播,八千人需要多少台服务器,一万人又需要多少台服务器?这些需要精准规划,所以对性能的要求是非常稳定的,神龙服务器可以完美满足,它在双十一的性能表现非常平稳。


第三是高性能。这个是本质的,如果性能不足够高的话,或者连物理机甚至虚拟机都达不到的话,做这样一款服务器,一个新型的计算架构,其实是没有意义的。


这几点,是我们做神龙服务器的一些思考。就像主持人所说,我其实已经做了十几年的虚拟化技术,谈到神龙每一次必须要谈到的就是虚拟化技术。


虚拟化技术历史

 

我是2004年开始做虚拟化,我当时还在读博士。当时在整个业界,在整个世界范围内真正是做虚拟化技术研究的不多,全球可能加一块来还不到一百人。我当时一直在想,我毕业之后到底能不能找到工作,因为这个择业范围太小了。


在那个时间点上,虚拟化基本上都是一些高校在研究,比如说斯坦福大学、剑桥大学,微软、VMWare等公司,还有我的老东家英特尔。


我们回顾历史,其实虚拟化的历史要比2004年还要早很多,不过一直都是在科研机构、大型IT公司里做研究。


第一个时间点是1974年。最早的理论成立,1974年有一篇论文《Formal Requirement for Virtualizable Third Generation Architecture》,这篇论文为未来40多年的虚拟化技术的快速演进奠定了理论基础:定义了什么样的技术才能叫做虚拟化,什么样的条件才能满足虚拟化的定义。


第二个时间点就是1997年。1997年,斯坦福大学的教授创立了VMWare公司。这家公司的成立,真正地把虚拟化技术的理论研究,落实到应用。


VMWare做了一个叫二进制翻译技术的创新。


为什么要做这个?


不得不说,英特尔X86架构,对虚拟化技术是不友好的。因为整个X86的演进,从4位、8位、16位到32位、64位。这样的过程,其实天生就和一些大型机、和虚拟化是不一样的。大型机最早就是为了多操作系统运行而设计的,要从指令集的设备层面去虚拟化。


而X86是逐渐演进的过程,最早从一个很小很小的PC市场开始做起。PC是没有虚拟化要求的,所以X86指令集对虚拟化不友好。一定程度上,二进制翻译技术可以在指令执行的过程中,动态扫描对虚拟化不友好的条件,一个个切换指令执行情况。这种方法的弊端是性能不太好。


在这个阶段,VMWare主要还都是在PC上面运行虚拟化,还不是今天所讲的云计算数据中心的虚拟化技术。云计算数据中心的虚拟化技术推行,是2005年。当年,英特尔发布了VT-x和VT-d技术,这是英特尔和AMD两家芯片公司为首发布的。他们觉得自己的X86的架构对虚拟化不友好,就扩展了指令集、扩展CPU的设计,让它能够更好地支持虚拟化技术。


这个技术加速了虚拟化进入数据中心,能够服务于云计算。


2009年,阿里云成立,云计算不太可能使用VMWare这样的商业化软件,所以就采用了当时比较流行的开源虚拟化软件Xen,后来我们到2014年切到了KVM。当时阿里云是深度定制化的KVM和Xen,做了产品化开发的。


我是2007年参与KVM研发的。在2014年之前,云计算行业里,大家想的都是,怎么样能够把当前CPU提供的能力、Xen、KVM等虚拟化的软件应用好,却没有发生多大变革。除了VMWare提供这个二进制翻译技术,还有PPT里没有展示的,剑桥大学提出的准虚拟化技术paravirtualization——除了这两个,没有太大的创新。


2014年、2015年,阿里云面临要服务大B类市场的时候,我们要解决成本问题,提升我们的服务能力。


当时我们的虚拟化技术,已经满足不了云计算发展的步伐。尤其在那个时间点上,我们也在探讨,怎样能够把阿里巴巴经济体的业务也迁移到云上面来,这遇到了很大的难题,我们需要去变革虚拟化技术。


于是, 2015年我们开始探索,2016年开始立项,到2017年,X-dragon神龙架构问世了。它真正使用软硬融合、软硬件协同设计的模式,改变了传统虚拟化技术和当前的计算架构不友好的地方。


以前虚拟化技术的设计思路,前提都是服务器和计算架构都已经定了,如何通过软件适配计算架构。


我们做神龙则是反其道而行之。我们觉得今天的虚拟化已经发展得非常好了,那我怎样能设计一种新的计算架构,让虚拟化运行得更好?它代表着云计算、云数据中心、虚拟化技术带来一个变革,它也给我们云计算、阿里云的高速发展带来了更坚定的信心。


传统虚拟化架构的缺陷


要设计这样一种新型架构,我们需要简单来看一下云数据中心的传统虚拟化架构是怎么样的、它有什么样的优缺点、我们为什么要变革它。


这张图是非常典型的虚拟化组织架构图。

 

我们可以看到,底层是大型的物理机集群,每一台物理机上面其实都会运行着Hypervisor——即虚拟化的系统软件,还有一个宿主机,比如Xen里面的Domain0。基本上是这样的模式。


在云计算里面,客户买到的都是虚拟机,虚拟机的计算能力、平稳性、弹性由下沉的虚拟化软件——而不是虚拟机——来完成的。比如说计算的虚拟化,虚拟一个CPU、虚拟内存、虚拟中断都会由Hypervisor软件来完成;虚拟存储,基本都由host的虚拟化实现模块来完成,即通过软件来做;网络也是,我们会引入虚拟交换机、虚拟路由器这些的虚拟网络。


这是一个非常典型的架构。在神龙出现之前大家都是这么用的,也没有觉得它有多么的不好。但阿里巴巴经济体,在把自身业务,以及部分大B类的客户上云时,我们发现了很多方面的问题。


我给大家简单介绍一下这些问题。

 

1、资源争抢、隔离性弱:这张图中,虚拟机就是客户的系统,宿主机就是我们的虚拟化管理系统。它们之间共处一室,会导致有资源的争抢。它们之间资源的争抢就会带来虚拟机计算能力的波动。

2、算力损失、成本高:宿主机和Hypervisor都要消耗CPU和内存方面的资源,这就没法把这台机器的资源全部给到客户,意味着成本的提升。比如说,我买了一个32核的物理服务器,我只能把16核或者20核给到客户,那剩下的12核可能就是一个浪费。但是没有它还不行,因为它要帮助虚拟化存储、虚拟化网络。资源的浪费就导致了成本的提升。

3、性能瓶颈明显:还有整个存储、网络的虚拟化,如前所述,都是由软件实现。软件实现方案优点是灵活和有一定的扩展性,但是缺点也很明显——性能、稳定性会比较差。这是它最大的问题。

4、难以支持裸机服务:因为物理机里面已经运行了这样一套Hypervisor软件,我们难以云的方式提供裸机、提供存储网络的弹性。即便云计算越发普及,部分企业还是有物理机的诉求,云厂商没有办法提供。如果提供只能提供物理机托管了,这就不是云计算了,而是回到了传统IT。


架构的缺陷带来了很多产品挑战。我们要解决这些问题。


带着这些问题,我们先去分析一下,客户到底要什么?

 


分析完之后,我们发现客户真正买我们计算型产品的时候,他需要更强的计算性能、需要更快的网络接入、更高的存储读写能力,存储的IOPS要高、网络的PPS要高、网络的带宽存储能力要高。这意味着说,我要有更高的更好的QoS(服务质量),网络、性能不能忽高忽低;还要更加安全;要有更低的成本。这就是客户的诉求。


我们拿着诉求,再对照虚拟化技术的缺点,进行技术探索和创新,看如何解决这些方面。


神龙就应运而生了,神龙是为云而生,是软硬融合的虚拟化技术。


神龙服务器性能关键的部分全部用芯片用硬件去实现,性能非关键的比如控制面部分,都用软件去做。最后带来灵活性和性能完美有机的结合。它和传统的虚拟化相比,代表了云数据中心虚拟化新一代技术,可以真正解决掉我们刚才说的问题。

 

神龙架构的演进


我们进入第二部分。


第一代神龙:裸金属虚拟化的先行者


第一代神龙,更多的是解决上云后如何支持裸机服务,说得直接点就是物理机,但是又不能是传统的物理机,需要充分和云计算基础设施融合。比如,它可以充分利用池化过的云存储资源、网络资源、数据库等。

 


在这种情况下,第一代神龙诞生了。我们叫bare metal virtualization,裸金属虚拟化。我们在业界第一个发布类似的产品。


它的体验可以用下面的一句话来总结,就是:超越物理机的性能,有虚拟机的体验。


什么是虚拟机的体验?我们知道,虚拟机整个运维全部都是自动化的,所有的资源都是池化过的,这其实是非常好的一种模式。传统虚拟化技术,有优势也有问题。如果说我们能够通过新技术,解决劣势保留优势——这是我们做第一代虚拟化的初衷。我们也做到了。


在这种架构下面,我们进行深层次的探索,设计了神龙MOC卡。


MOC卡里,有一个神龙芯片做高速数据面的转发;有一个芯片加速引擎,存储EBS、网络,所有管控面的东西,都下沉到芯片中;整个生命周期的管理、所有的接口都和虚拟机保持一致。比如,存储都是用virtio-blk,网络都是virtio-net的接口,其他设备也和虚拟机保持一致。


如此一来,它可以和虚拟机无缝兼容,可以和虚拟机在同样的VPC里、可以挂载云盘,跟虚拟机使用体验一样。


我们设计了X-dragon Hypervisor和自研神龙芯片,提供了安全可靠可信、计算无损的服务。神龙支持弹性的存储,可以支持挂16块EBS云盘,并且每一个EBS云盘都可以高达32G;它也可以提供31个ENS动态、弹性的网络接口,可以动态地插进去一些网卡。一个物理机,它的网络接口可以动态增加和减少。


芯片加速的IO引擎,支持无缝接入VPC,无缝接入EBS存储,支持免装机,直接一个芯片就可以启动,一两分钟就交付了裸机服务。

 


第一代的特点是,一张芯片其实解决了所有问题,物理机可以使用云存储、VPC网络、挂载本地盘的问题。所有系统管理也都在这张卡里面做。我们加入了安全芯片的能力,可以让弹性、稳定性、性能和成本完美地结合。虚拟化下沉到这张卡,就是本质。


第二代神龙:融合虚拟化的践行者

 


第二代的神龙叫融合虚拟化的践行者,这就是阿里云线上第六代实例大规模使用的技术。


和第一代相比,整个神龙芯片能力进一步增强,不但可以支持的裸金属系统,它还可以支持虚拟机。


我们为虚拟机设计了一个超薄的Hypervisor,叫Dragonfly,就是让神龙能够飞起来的Hypervisor。它几乎不占用任何的资源,可以支撑很多的虚拟机系统,所有的计算资源都可以给到客户,资源和性能无损;并且每个虚拟机之间,是通过硬件的队列进行隔离的,虚拟机和虚拟机之间,虽然共处一室但各行其道,没有任何共线的干扰。


我们做到了:


① 技术的融合、资源的并池,就是一套软硬件支持容器、虚拟机和裸金属三套服务。

② Dragonfly Hypervisor超轻薄,能够让整个虚拟机资源的占用接近于0。

③ 直通型的硬件IO设备,比如提供512个网络队列,最高提供512个ENI,存储有512个队列,至少能够下载几十块云盘。它的能力会进一步的增强。

④ 最难做的是全组件的热迁移,包含芯片、FPGA组件全部做热升级。解决了热升级的问题,我才解决整个研发上能够快速迭代的难题。

 


刚刚一直提到的Dragonfly Hypervisor有以下特点:


超轻薄,资源零损耗。内存占用大概每个虚拟机不到1 MB,但是CPU占用小于0.1%

超平稳,接近零抖动。100万个数据包可能会有一个抖动。业界可能做得最好的是10万级别的。我们做到100万。

超平滑,兼容原架构,和KVM无缝兼容,能够解决掉资源池之间互相热迁移的难题。


第三代:极致性能的追求者

 


第三代神龙架构,它是极致性能的追求者。我们在去年的云栖大会发布。整个性能处于业界最高的水平。相对于同行的类似架构,我们性能大概在5倍之多,存储、网络等关键性能指标,都是他的5倍以上。


第三代神龙的最大变化,就是

①  所有的数据面路径全面芯片化,存储、网络、数据都芯片化,性能大幅提升。

② 提供了硬件级、电信级QoS的管理,比如存储、网络每秒钟需要多少数据包、多大的带宽,都超级精确,精确到了一个数据包。原来只有电信级的设备里才有。我们在云数据中心服务器里实现了。

③ 增强型融合网络,可以提供接近裸机的低延时网络。

④ 增强型硬件队列,支持1千个1024存储队列和1024网络队列,队列和队列之间的隔离性进一步增强。

 


三代神龙拓展了弹性计算产品的边界。第一代发布于2017年10月份,第二代在2018年9月份发布,第三代是去年的9月26号上午发布。


我们整个的网络性能,单机做到了2500万PPS,这个相当于友商大概5倍左右。存储做到了100万IOPS。现有的弹性计算产品在提供这些特性,有一些实例里大家能够感受到明显提升。接下来我们会全面切到第三代。

 


神龙发展到今天,去年,不仅仅集团经济体的业务全面迁到了神龙,整个公共云的计算类服务,也全部都迁到神龙架构。阿里巴巴、阿里云新增的任何一代服务器,全部都是神龙架构:X86通用实例——G系列、T系列和R系列全面升级,异构计算以及高性能计算相关实例全部都切到了神龙,可以提供刚刚讲到的第三代神龙的能力,比如说100万数据包才会有一个抖动。


神龙架构的实践


最后,我简单介绍一下神龙到目前的一些实践。


刚才叔同老师也介绍了,神龙和容器之间有一种双剑合璧效果。


我们为容器设计了一个特别的网络,叫Terway network ,它和VPC(virtual private cloud)能够天然融合。每一个容器都会有一个VPC的IP,它们之间全部网络和存储,都是一个硬件队列来进行相对隔离。


在去年的双十一,很多典型的应用,容器加神龙表现出了非常好的能力。

 


这里展现的是我们电商里的某一个很关键的应用,也是我们每次下单都要用到的应用,它整个QPS提升了30%,RT下降了96%。


在极限压力情况下,它还有这么好的表现。客户资源的利用率,CPU利用率最高可以提升到80%。


为什么会有这种效果?

 


图里蓝色这根线是传统的物理机,红色这跟是同规格的——就是CPU、内存相关等所有的东西都一样的——神龙架构的物理机。


它们两个在云上运行业务的时候,我们可以看到蓝色这个,可能CPU利用率到40%的时候,业务延迟就会增加了,超过50%、60%,整个业务就出现崩盘了。但是神龙,当CPU利用率即使高到接近100%的时候,业务延迟增长还是非常少。


平均下来,一般的服务器能压到百分之二三十的CPU利用率,就已经不错了。神龙可以压到百分之五六十,都有非常线性、平稳的业务表现。有很多的客户都开始使用我们的神龙服务器。

 


另外一个神龙的用处,就是能够把VMWare的私有云,迁到公共云上。我们知道,线下有很多数据中心,都使用都了VMWare私有云。很多客户会用龙都把线下的VMWare的私有云迁上来。没有神龙,这实现不了,因为传统云计算实例,没法支持VMWare这种虚拟化软件。


如果用了OpenStack,底层使用了KVM,想把你整个线下OpenStack的私有云搬到云上面来,神龙裸金属服务器也可以解决。

 


最后,近段时间新冠病毒爆发了之后,阿里云为十几家公共科研机构提供算力直吹。这背后就是用神龙裸金属搭建的高性能计算能力。


神龙架构的未来

 

前几天,我们神龙架构的论文,在计算机系统的顶会ASPLOS 2020做了分享。

论文介绍了裸金属虚拟化相关的整体规划,和我们未来要做的东西。兴趣的朋友,可以到这个地址去下载我们的论文,也有视频讲解。


未来,我们也会继续在神龙架构持续创新,大家如果对这个领域有什么疑问或者想法,欢迎联系我们。


谢谢大家!

 

【END】

更多精彩推荐

一站式杀手级 AI 开发平台来袭!告别切换零散建模工具

北京四环堵车引发的智能交通大构想

拜托,别再问我什么是堆了!

北京四环堵车引发的智能交通大构想

你公司的虚拟机还闲着?基于Jenkins和Kubernetes的持续集成测试实践了解一下!

从Web1.0到Web3.0:详析这些年互联网的发展及未来方向



你点的每个“在看”,我都认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存